#include <iostream>
#include <cstring>
using namespace std;
const int N=1e5+10;

int dp[N],dep[N],sz[N];
int h[N*2],ne[N*2],to[N*2],idx;
int n;
void add(int x,int y)
{
	ne[idx]=h[x];
	to[idx]=y;
	h[x]=idx++;
}
void dfs1(int u,int fa)
{
	sz[u]=1;
	for(int i=h[u];~i;i=ne[i])
	{
		int j=to[i];
		if(j==fa)
			continue;
		dep[j]=dep[u]+1;
		dfs1(j,u);
		sz[u]+=sz[j];
	}
}
void dfs2(int u,int fa)
{
	for(int i=h[u];~i;i=ne[i])
	{
		int j=to[i];
		if(j==fa)
			continue;
		dp[j]=min(dp[j],dp[u]-sz[j]+(n-sz[j]));
		dfs2(j,u);
	}
}
int main()
{
	
	cin>>n;
	int u=-1;
	memset(h,-1,sizeof(h));
	for(int i=0;i<n-1;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		if(u==-1)
			u=a;
		add(a,b);
		add(b,a);
	}
	dfs1(u,-1);
	memset(dp,0x3f3f3f3f,sizeof(dp));
	dp[u]=0;
	for(int i=1;i<=n;i++)
	{
		dp[u]+=dep[i];	
	}
	dfs2(u,0);
	int ret=0x3f3f3f3f;
	for(int i=1;i<=n;i++)
	{
		ret=min(ret,dp[i]);
	}
	cout<<ret<<endl;
	return 0;
}
